<?php

interface iAction {}
interface iTreasure {
    public function autoPlayNum(Game $game);
}
interface iVictory{}
interface  iCurse{}
interface iAttack{}
interface iReaction{}
interface  iKingdom{}
interface iPrize{}
interface iRuin{}
interface iSpoils{}
interface iKnight{}
interface iLooter{}
interface iShelter{}
interface iCoinTokensRequired{}


interface iDuration{
    public function startTurn(Game $game, $quantity);
}

interface iInfluence{
    public function influence(Game $game);
}

interface iAlchemy{}
interface iBasic{}
interface iIntrigue{}
interface iCornucopia{}
interface iSeaside{}
interface iProsperity{}
interface iPromotion{}
interface iHinterlands{}
interface iAddiction{}
interface iDarkAges{}
interface iGuilds{}
interface iHolyGrail{}

interface iReactingCard {
    public function getConditions(); // returns ReactionConditions object
    public function isReactRelevant(Game $game, $card, $name);
    public function react(Game $game, $card, $name);
    
}

class ReactionConditions {
    public $action;         // array of Buy, Gain, Attack
    public $actor;          // Yourself, SomeoneElse
    public $cardLocation;   // array of piles
    public $limit;          // ForEachCard, OncePerReaction, UnlimitedReaction
    public $isDefence = false;
    public $isMandatory = false;
    public $isEmptyReaction = false;
}
?>